package com.example.scala.chapter4

/**
 *
 * Description:
 *
 * Create by lucienoz on 2021/10/15.
 * Copyright © 2021 lucienoz. All rights reserved.
 */
object chapter02 {
	def main(args : Array[String]) : Unit = {
		//可变形参
		//参数列表数为1个时，可变形参
		def foo(bar : String*) : Unit = {
			val bar1 : Seq[String] = bar //可变形参会将变量包装成一个Seq对象
			println ( bar1.mkString )
		}

		//参数列表数不为1时，可变形参
		def foo2(foo:String,bar:String*) : Unit ={} //可变形参，在形参列表不为1时只能将其放在会后，否则将Error

		//参数默认值与带名参数传参
		def foo3(foo:String="foo",bar:String,foobar:String):Unit={
				println(s"$foo $bar $foobar")
		}
		foo3("bar","bar","foobar")
		//foo3("bar","foobar") //Error ,Scala会按形参列表顺序进行传参，当传一个参数时Scala会认为是给foo参的参数而不是bar参数进行传参
		foo3(bar = "bar",foobar = "foobar") //一旦使用带名传参，其他参数也应进行进行带名传参，因为，第二参数Scala仍会将上一个带有默认值的参数和剩下的第三个参数丢进参数列表进行匹配

		def foo4(foo:String,bar:String="bar"):Unit={
			println ( s"$foo $bar" )
		}
		foo4("foo") //按顺序传参，后面的带有默认值的参数可以不传值





	}

}
